Fix the update areas for incremental loading of compressed tgas. (#171883,
authorMatthias Clasen <mclasen@redhat.com>
Tue, 29 Mar 2005 05:21:26 +0000 (05:21 +0000)
committerMatthias Clasen <matthiasc@src.gnome.org>
Tue, 29 Mar 2005 05:21:26 +0000 (05:21 +0000)
2005-03-29  Matthias Clasen  <mclasen@redhat.com>

* io-tga.c (parse_rle_data): Fix the update areas for incremental
loading of compressed tgas.  (#171883, David Costanzo)

gdk-pixbuf/ChangeLog
gdk-pixbuf/io-tga.c

index 6ad4c7b9c8c06c66241f7d965c48d2e209546989..64b34938458e77a33a667eecc53bdf4f3d147dfc 100644 (file)
@@ -1,3 +1,8 @@
+2005-03-29  Matthias Clasen  <mclasen@redhat.com>
+
+       * io-tga.c (parse_rle_data): Fix the update areas for incremental
+       loading of compressed tgas.  (#171883, David Costanzo)
+
 2005-03-27  Matthias Clasen  <mclasen@redhat.com>
 
        * io-bmp.c (DoCompressed): Use the correct update regions for
index 2dc753822ee75fda88118f9c11f938d6f6b7f5ce..d28cf0903092ce7cdffc8a91849540fbb94efa96 100644 (file)
 /*
  * Some NOTES about the TGA loader (2001/06/07, nikke@swlibero.org)
  *
- * - The module doesn't currently provide support for TGA images where the
- *   order of the pixels isn't left-to-right and top-to-bottom.  I plan to
- *   add support for those files as soon as I get one of them.  I haven't
- *   run into one yet.  (And I don't seem to be able to create it with GIMP.)
- *
  * - The TGAFooter isn't present in all TGA files.  In fact, there's an older
  *   format specification, still in use, which doesn't cover the TGAFooter.
  *   Actually, most TGA files I have are of the older type.  Anyway I put the 
@@ -635,6 +630,7 @@ static guint parse_rle_data_grayscale(TGAContext *ctx)
 
 static gboolean parse_rle_data(TGAContext *ctx, GError **err)
 {
+       guint rows = 0;
        guint count = 0;
        guint pbuf_count = 0;
        guint bytes_done_before = ctx->pbuf_bytes_done;
@@ -667,14 +663,15 @@ static gboolean parse_rle_data(TGAContext *ctx, GError **err)
                 */
                if (!(ctx->hdr->flags & TGA_ORIGIN_UPPER))
                        pixbuf_flip_vertically (ctx->pbuf);
-       }
 
+       }
+               
+       rows = ctx->pbuf_bytes_done / ctx->pbuf->rowstride - bytes_done_before / ctx->pbuf->rowstride;
        if (ctx->ufunc)
-               (*ctx->ufunc) (ctx->pbuf, 0, ctx->pbuf_bytes_done / ctx->pbuf->rowstride,
-                              ctx->pbuf->width, pbuf_count / ctx->pbuf->rowstride,
+               (*ctx->ufunc) (ctx->pbuf, 0, bytes_done_before / ctx->pbuf->rowstride,
+                              ctx->pbuf->width, rows,
                               ctx->udata);
 
-
        return TRUE;
 }